package com.itheima.a03integerdemo;

public class A01_IntegerDemo1 {
    public static void main(String[] args) {

        //1.利用构造方法获取Integer的对象
        //public Integer(int value)：根据 int 值创建 Integer 对象(过时)
        Integer i1 = new Integer(100);//在 Java 9 及以后的版本中，已被标记为弃用
        System.out.println(i1);

        //public Integer(String s)：根据 String 值创建 Integer 对象(过时)
        Integer i2 = new Integer("100");
        //Integer i2 = new Integer("abc"); //NumberFormatException
        System.out.println(i2);
        System.out.println("--------");

        //2.利用静态方法获取Integer的对象
        //public static Integer valueOf(int i)：返回表示指定的 int 值的 Integer 实例
        Integer i3 = Integer.valueOf(100);
        System.out.println(i3);

        //public static Integer valueOf(String s)：返回保存指定String值的Integer对象
        Integer i4 = Integer.valueOf("100");
        System.out.println(i4);

        //3.这两种方法获取对象的区别（掌握）
        //底层原理：
        //因为在实际开发中，-128~127之间的数据，用的比较多。
        //如果每次使用都是new对象，太浪费内存了
        //所有，提前把这个范围之内的每一个数据都创建好对象
        //如果要用到了，就直接返回已经创建好的对象
        Integer i5 = Integer.valueOf(127);
        Integer i6 = Integer.valueOf(127);
        System.out.println(i5 == i6); //true

        //128不在范围内，则new一个新对象出来
        Integer i7 = Integer.valueOf(128);
        Integer i8 = Integer.valueOf(128);
        System.out.println(i7 == i8); //false

    }
}
